package org.tradeinterceptor.modular.strategy;

import java.util.List;
import java.util.Properties;

/**
 * Poor man's spring, but at least it does not require spring or guice in the classpath...
 * 
 * @author vermes
 *
 */
public interface StrategyInitializer {

	/**
	 * Gets the list of all strategy modules.
	 * 
	 * @return the list of the strategy modules.
	 */
	public List<StrategyModule> getModules();
	
	/**
	 * @return the take profit limit.
	 */
	public double getTakeProfit();
	
	/**
	 * @return the trailing stop limit.
	 */
	public double getTrailingStop();
	
	/**
	 * @return how many modules should agree on opening a position.
	 */
	public double getModulesOpenRatio();
	
	/**
	 * @return how many modules should agree on closing a position.
	 */
	public double getModuleCloseRatio();
	
	/**
	 * @return the notifier class.
	 */
	public Notifier getNotifier();
	
	/**
	 * Sets properties. Properties can pass some parameters to all strategy modules.
	 * 
	 * @param properties
	 */
	public void setProperties(Properties properties);
}
